Parameterization কী?
Parameterization টেস্টএনজি (TestNG) তে এমন একটি ফিচার যা টেস্ট মেথডে ডায়নামিক ডেটা প্রদান করতে ব্যবহার করা হয়। এটি কনফিগারেশন ফাইল (TestNG XML) বা @Parameters অ্যানোটেশনের মাধ্যমে ইনপুট সরবরাহ করে।
Parameterization এর প্রয়োজনীয়তা
- ডেটা ড্রিভেন টেস্টিং: একই টেস্ট মেথডকে একাধিক ইনপুট দিয়ে চালানোর জন্য।
- ডায়নামিক ইনপুট: টেস্ট রানের সময় ডেটা পরিবর্তনের সুবিধা দেয়।
- কোড রিইউজেবিলিটি: একই টেস্ট মেথডে বিভিন্ন ইনপুট ব্যবহার করে কোডের পুনরাবৃত্তি কমায়।
- কনফিগারেশন ফাইল ব্যবহার: টেস্টএনজি XML ফাইল থেকে ডেটা নেওয়ার সুবিধা।
Parameterization এর ধরন
১. TestNG XML ফাইলের মাধ্যমে Parameterization
TestNG XML ফাইল ব্যবহার করে টেস্ট মেথডে ডেটা সরবরাহ করা যায়।
উদাহরণ:
ধাপ ১: কোড তৈরি করুন
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizationExample {
@Test
@Parameters({"username", "password"})
public void testLogin(String username, String password) {
System.out.println("Username: " + username);
System.out.println("Password: " + password);
}
}
ধাপ ২: TestNG XML ফাইল তৈরি করুন
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ParameterizationSuite">
<test name="LoginTest">
<classes>
<class name="ParameterizationExample">
<parameter name="username" value="admin"/>
<parameter name="password" value="admin123"/>
</class>
</classes>
</test>
</suite>
আউটপুট:
Username: admin
Password: admin123
২. @DataProvider ব্যবহার করে Parameterization
@DataProvider অ্যানোটেশন ব্যবহার করে একাধিক ইনপুট সরবরাহ করা যায়। এটি ডেটা-ড্রিভেন টেস্টিংয়ে বেশি ব্যবহৃত হয়।
উদাহরণ:
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderExample {
@DataProvider(name = "loginData")
public Object[][] dataProviderMethod() {
return new Object[][] {
{"admin", "admin123"},
{"user1", "password1"},
{"user2", "password2"}
};
}
@Test(dataProvider = "loginData")
public void testLogin(String username, String password) {
System.out.println("Username: " + username + ", Password: " + password);
}
}
আউটপুট:
Username: admin, Password: admin123
Username: user1, Password: password1
Username: user2, Password: password2
Parameterization এর মাধ্যমে গণনা টেস্ট
উদাহরণ: দুই সংখ্যার যোগফল টেস্ট করার জন্য Parameterization ব্যবহার।
TestNG XML ফাইলের মাধ্যমে:
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class CalculatorTest {
@Test
@Parameters({"num1", "num2"})
public void testAddition(int num1, int num2) {
int result = num1 + num2;
System.out.println("Addition of " + num1 + " and " + num2 + " is: " + result);
}
}
TestNG XML:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="CalculatorSuite">
<test name="AdditionTest">
<classes>
<class name="CalculatorTest">
<parameter name="num1" value="10"/>
<parameter name="num2" value="20"/>
</class>
</classes>
</test>
</suite>
আউটপুট:
Addition of 10 and 20 is: 30
@DataProvider ব্যবহার করে:
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CalculatorDataProvider {
@DataProvider(name = "additionData")
public Object[][] dataProviderMethod() {
return new Object[][] {
{5, 3, 8},
{10, 15, 25},
{7, -2, 5}
};
}
@Test(dataProvider = "additionData")
public void testAddition(int num1, int num2, int expectedResult) {
int actualResult = num1 + num2;
System.out.println("Addition of " + num1 + " and " + num2 + " is: " + actualResult);
assert actualResult == expectedResult : "Test Failed!";
}
}
আউটপুট:
Addition of 5 and 3 is: 8
Addition of 10 and 15 is: 25
Addition of 7 and -2 is: 5
Parameterization এর সুবিধা
- কোড রিইউজেবিলিটি: একই টেস্ট মেথড বারবার ব্যবহার করা যায়।
- ডায়নামিক ইনপুট: XML বা @DataProvider থেকে সরাসরি ইনপুট ডেটা আসতে পারে।
- সহজ রক্ষণাবেক্ষণ: ডেটা আলাদাভাবে সংজ্ঞায়িত থাকায় টেস্ট কোড পরিষ্কার থাকে।
- টেস্ট কভারেজ বৃদ্ধি: একাধিক ডেটা সেট দিয়ে টেস্ট চালানোর মাধ্যমে কভারেজ বাড়ানো যায়।
সারাংশ
TestNG-র Parameterization বৈশিষ্ট্য ডেটা-ড্রিভেন টেস্টিংয়ের একটি অত্যন্ত কার্যকর উপায়। এটি কনফিগারেশন ফাইল বা @DataProvider ব্যবহার করে টেস্ট মেথডে ইনপুট প্রদান সহজ করে। এটি বড় মাপের টেস্টিং প্রজেক্টে সময় বাঁচায় এবং টেস্ট কভারেজ উন্নত করে।
Read more